<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Exception;
use think\Request;
use app\admin\controller\Base;

class Resources extends Base
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // 查询资源
        $data = Db::name('resources')
            ->field('id, resname, udaddress, status')
            ->paginate(5);

        $this->assign('data', $data);
        return $this->fetch('resources/index');

    }

    /**
     * 显示添加资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        // 引用晓梅的3级的分类
        return view('addResources');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {

        $data = $_POST;

        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('res');

        // 移动到框架应用根目录/public/uploads/ 目录下
        if($file){
            $info = $file->move(ROOT_PATH . RES_PATH);
            if($info){
                // 成功上传后 获取上传信息
                // 输出 jpg
//                echo $info->getExtension();
                // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                $data['udaddress'] = $info->getSaveName();
                // 输出 42a79759f284b767dfcb2a0197904287.jpg
//                echo $info->getFilename();
            }else{
                // 上传失败获取错误信息
                echo $file->getError();
            }
        }

        if(isset($data['categorythree'])){
            unset($data['categoryone']);
            unset($data['categorytwo']);
            $data['categoryid'] = $data['categorythree'];
            unset($data['categorythree']);
        }else{
            if(isset($data['categorytwo'])){
                unset($data['categoryone']);
                $data['categoryid'] = $data['categorytwo'];
                unset($data['categorytwo']);
            }else{
                $data['categoryid'] = $data['categoryone'];
                unset($data['categoryone']);
            }
        }

        // 查询cname
        $cname = Db::name('category')
                            ->field('catename')
                            ->where('id', $data['categoryid'])
                            ->find();
        $data['cname'] = $cname['catename'];

        // 上传时间
        $data['createtime'] = time();

//        dump($data); die;
        // 插入数据库
        // 开启事务
        Db::startTrans();
        try{
            $res = Db::name('resources')
                ->insert($data);

//            dump($res); die;

            if ($res>0){
                Db::commit();
                $this->success('添加成功!!!','/adminResources');
            }
        }catch(Exception $exception){
            Db::rollback();
            $this->error('因未知原因, 添加失败...');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {

    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {

        // 查询课程名
        $cdata = Db::name('category')
            ->field('id, catename')
            ->where('pid', 0)
            ->select();

        // 查询信息
        $data = Db::name('resources')
            ->field('id, cname, resname, comment, udaddress, status')
            ->where('id', $id)
            ->find();


        return view('editResources', [
            'data' => $data,
            'cdata' => $cdata,
            'id' => $id
        ]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {

        $data = input('post.');

        $file = request()->file('res');
        // 移动到框架应用根目录/public/uploads/ 目录下
        if($file){
            $info = $file->move(ROOT_PATH . RES_PATH);
            if($info){
                // 成功上传后 获取上传信息
                $data['udaddress'] = $info->getSaveName();
            }
        }

        $data['createtime'] = time();
        unset($data['_method']);

//        dump($data);die;

        // 各种判断

        // 插入数据库
        // 开启事务
        Db::startTrans();
        try{
            $res = Db::name('resources')
                ->where('id',$id)
                ->update($data);

            if ($res>0){
                Db::commit();
                $this->success('修改成功!!!', '/adminResources');
            }
        }catch(Exception $exception){
            Db::rollback();
            $this->error('因未知原因, 修改失败...');
        }

    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {

        // 执行删除数据库
            $res = Db::name('resources')
                ->where('id', $id)
                ->delete();

            if( $res>0 ){
                return 200;
            }else{
                return 404;

            }
        }


}
